#pragma once
#include "Game.h"
#include "Timer.h"
#include "InputManager.h"
#include "Model.h"
#include "Texture.h"
#include "Shader.h"


using namespace std;

#define RESOURCE_PATH "../sdcard/ExamGL/Resources/resources.txt"
#define SCENE_PATH "../sdcard/ExamGL/Resources/level1.txt"
#define KEYFILE_PATH "../sdcard/ExamGL/Resources/KeyFile.txt"
#define MENU_PATH "../sdcard/ExamGL/Resources/menu.txt"
#define SCORE_PATH "../sdcard/ExamGL/Resources/score.txt"

#define SPEED_MAX 140.0f
#define SPEED_AVERAGER 80.0f

class GameObject
{

protected:

	Shader* shader;
	Model* model;

	vector < GLuint *> textureID;
	GLuint cubeID;

	Matrix mvpMatrix;

	Vector3 position;
	Vector3 scale;
	Vector3 rotation;

	MyBox boxObject;

	float mWidth;
	float mHeight;

public:
	GameObject(void);
	virtual void Init();
	void Rotation();
	virtual void Update();
	virtual void Render();
	Matrix GetWorldMatrix();

	void SetPosition(Vector3 position);
	void SetRotation(Vector3 rotation);
	void SetScale(Vector3 scale);

	Vector3 GetPosition();

	void AddTexture(GLuint *_textureID);
	void SetCubeID(GLuint _cubeID);
	void SetShader(Shader* _shader);
	void CoppyGameObject(GameObject * gameObject);

	Model* GetModel();
	Shader* GetShader();

	MyBox GetBox();

	~GameObject(void);
};

